// 引入 lodash 的常用工具函数
import merge from 'lodash/merge';
import pick from 'lodash/pick';
import uniqueId from 'lodash/uniqueId';
import upperFirst from 'lodash/upperFirst';

// 对象转为查询字符串
const toQueryString = obj => Object.keys(obj).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`).join('&');

// 事件监听器注册工具
const addListener = (target, eventName, handler) => {
  if (typeof handler === 'function') target.on(eventName, handler);
};

// 计算矩形的包围盒（左上、右下坐标）
const  getBox=(x, y, width, height)=> {
  const x1 = (x + width) < x ? (x + width) : x
  const x2 = (x + width) > x ? (x + width) : x
  const y1 = (y + height) < y ? (y + height) : y
  const y2 = (y + height) > y ? (y + height) : y
  return {
      x1, x2, y1, y2
  }
}

// 导出所有工具函数，便于全局复用
export {
  merge,         // 对象合并
  pick,          // 对象属性选择
  toQueryString, // 对象转查询字符串
  uniqueId,      // 生成唯一ID
  upperFirst,    // 首字母大写
  addListener,   // 事件监听注册
  getBox         // 计算包围盒
};